package SingleThread;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Queue;


public class URLList {
	private Queue<URL> queue;
//	private HashMap<Integer, URL> links;
//	private HashMap<Integer, URL> mails;
//	private HashSet<URL> links;
//	private HashSet<URL> mails;
	private ArrayList<URL> links;
	private ArrayList<URL> mails;
	
	
	
	public URLList(Queue<URL> q){
		queue = q;
//		links = new HashMap<Integer, URL>();
//		mails = new HashMap<Integer, URL>();
//		links = new HashSet<URL>();
//		mails = new HashSet<URL>();
		links = new ArrayList<URL>();
		mails = new ArrayList<URL>();
	}
	
//	public void addLink(URL url){
//		if(isEmail(url)){
//			if(!mails.containsKey(url.hashCode())){
//				mails.put(url.hashCode(), url);
//			}
//		}else{
//			if(!links.containsKey(url.hashCode())){
//				links.put(url.hashCode(), url);
//				queue.add(url);
//			}
//		}
//	}
//	
//	
//	public Collection<URL> getLinks(){
//		return links.values();
//	}
//	
//	public  Collection<URL> getMails(){
//		return mails.values();
//	}
//	
	public int getTotalSize() {
		return mails.size() + links.size();
	}
	
//	public void addLink(URL url){
//		if(isEmail(url)){
//			if(!mails.contains(url)){
//				mails.add(url);
//			}
//		}else{
//			if(!links.contains(url)){
//				links.add(url);
//				queue.add(url);
//			}
//		}
//	}
//	
//	
//	public Collection<URL> getLinks(){
//		return links;
//	}
//	
//	public  Collection<URL> getMails(){
//		return mails;
//	}
//	
	
	public void addLink(URL url){
		if(isEmail(url)){
			if(!mails.contains(url)){
				mails.add(url);
			}
		}else{
			if(!links.contains(url)){
				links.add(url);
				queue.add(url);
			}
		}
	}
	
	public Collection<URL> getLinks(){
		return links;
	}
	
	public Collection<URL> getMails(){
		return mails;
	}
	
	
	private boolean isEmail(URL url){
		if(url.toString().startsWith("mailto:")){
			return true;
		}
		return false;
	}

}
